package com.itheima.entry;

import com.itheima.domain.Student;

import java.util.ArrayList;
import java.util.Scanner;

/*
操作学生的类
 */
public class StudentCaoZuo {
    Scanner sc = new Scanner(System.in);
    private ArrayList<Student> list = new ArrayList<>();

    //增
    public void add() {
        //键盘录入学号

        Scanner sc = new Scanner(System.in);
        System.out.println("学号");
        String sid = null;
        while (true) {
            sid = sc.next();
            //判断学号是否重复
            //调用方法获取学号的索引
            int index = getIndex( sid);
            //>=0存在   重新录入
            if(index>=0){
                System.out.println("你输入的学号已经存在,请重新输入");
            }else {
                //>0 不存在  可以继续了
                break;
            }
        }
        System.out.println("姓名");
        String name = sc.next();
        System.out.println("年龄");
        int age = sc.nextInt();
        System.out.println("生日");
        String birthday = sc.next();

        Student student = new Student(sid, name, age, birthday);
        list.add(student);
        System.out.println("添加成功");
    }


    //删
    public void delete() {
        //键盘录入学号
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入学号");
        String sid = sc.next();
        //判断学号是否存在
        int index = getIndex(sid);
        if (index >= 0) {
            //存在  删除  根据什么删 (只能根据 索引删)
            list.remove(index);
            System.out.println("删除成功");
        } else { //不存在 提示
            System.out.println("要删除的学号不存在,请核对后重新删除");
        }
    }

    //改
    public void update() {
        //键盘录入学号
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入学号");
        String sid = sc.next();
        //判断学号是否存在
        int index = getIndex(sid);
        if (index >= 0) {
            System.out.println("姓名");
            String name = sc.next();
            System.out.println("年龄");
            int age = sc.nextInt();
            System.out.println("生日");
            String birthday = sc.next();
            Student student = new Student(sid, name, age, birthday);
            list.set(index, student);
            System.out.println("修改成功");
        } else { //不存在 提示
            System.out.println("要修改的学号不存在,请核对后重新修改");
        }
    }


    //查
    public void find() {
        if (list.size() == 0) {
            System.out.println("没有数据,请先添加");
            return;
        }
        //打印表头
        System.out.println("学号\t姓名\t年龄\t生日");
        //循环遍历
        for (int i = 0; i < list.size(); i++) {
            Student student = list.get(i);
            System.out.println(student.getSid() + "\t" + student.getName() + "\t" + student.getAge() + "岁\t" + student.getBirthday());
        }

    }

    //写一个方法 根据学号找索引
    //参数  学号String sid  ,集合  ArrayList<Student>  list
    //返回值类型  索引 int
    public int getIndex(String sid) {
        //遍历集合
        int index = -1;
        for (int i = 0; i < list.size(); i++) {
            //获取每一个学生对象
            Student student = list.get(i);
            //获取每一个学生对象的学号
            String stuSid = student.getSid();
            //判断是否相同
            if (sid.equals(stuSid)) {    //相同 返回索引
                // return i;
                index = i;
                break;
            }//   //不同 继续下一个
        }
        return index;
    }

}
